#ifndef __DRIBBLE_BEHAVIOUR_H__
#define __DRIBBLE_BEHAVIOUR_H__

#include "../ModuleInterface.h"
#include "RunToPositionBehaviour.h"
#include "TurnNeckToBehaviour.h"
#include "TurnToBehaviour.h"
#include "NearKickBehaviour.h"

/*
 * Driblovanie s loptou
 *
 */

class DribbleBehaviour : public ModuleInterface
{
	USE_MODULE(RunToPositionBehaviour)
	USE_MODULE(TurnNeckToBehaviour)
	USE_MODULE(TurnToBehaviour)
	USE_MODULE(NearKickBehaviour)

public:
	DribbleBehaviour();
	virtual void Behave(const Point& position, float angle = 0,  bool bFast = false);
	bool ManageDribblePoint();
	bool SmartDribleTo(const Point& pos);

protected:
	bool DribbleRun(float angle);
	void TransformLookDirection(Point& pointDirection);

	//enum a premenne pre aktualnu a predchadzajucu poziciu krku
	enum NeckDirection
	{
		LEFT = 1, FRONT, RIGHT
	};

	NeckDirection eActualNeckDirection, ePreviousNeckDirection;
};

#endif
